/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.tesis2.pucp.Seguridad.Controlador;

import com.tesis2.pucp.Modelo.TesisUsuario;
import com.tesis2.pucp.Seguridad.DAO.UsuarioDAO;
import com.tesis2.pucp.Seguridad.Vista.BuscarUsuarioGUI;
import com.tesis2.pucp.Seguridad.Vista.UsuarioGUI;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;


/**
 *
 * @author jorge
 */
public class BuscarUsuarioControlador {
    private UsuarioDAO m;
    private BuscarUsuarioGUI buscarUsuarioView;
    private ArrayList<TesisUsuario> lstUsuario;
    private ArrayList<String> lstEstado;
    private final static int ESTADO_ACTIVO=1;
    private final static int ESTADO_INACTIVO=2;
        
    public BuscarUsuarioControlador(UsuarioDAO dao, BuscarUsuarioGUI v){
        m = dao;
        buscarUsuarioView = v;
       
        llenarEstadoCombo();
        buscarUsuarioView.addBuscarListener(new listarUsuarios() );
        buscarUsuarioView.addEditarListener(new editarUsuarioListener(this));
        buscarUsuarioView.addNuevoListener(new crearUsuarioListener(this));
        buscarUsuarioView.addLimpiarListener(new limpiarListener());
        buscarUsuarioView.addELiminarListener(new eliminarListener());
        buscarUsuarioView.addActivarListener(new activarListener()); 
        
    }
    
    private void llenarEstadoCombo(){
        lstEstado = m.listarEstado();
        buscarUsuarioView.llenaComboEstado(lstEstado);
    }      

    public void listarResultados(){
        lstUsuario = m.listarUsuario();               
        buscarUsuarioView.llenaGrilla(lstUsuario);        
    }
    
    class listarUsuarios implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e) {
            listarResultados();
        }
    }
        
    class crearUsuarioListener implements ActionListener {
        
        private BuscarUsuarioControlador buc;
        public crearUsuarioListener(BuscarUsuarioControlador buscarusr){
            buc=buscarusr;
        }
                
        @Override
        public void actionPerformed(ActionEvent e) {
            UsuarioGUI p = new UsuarioGUI(buscarUsuarioView.getPadre(), true);
            UsuarioControlador c = new UsuarioControlador (m,p,buc,null);
            p.setVisible(true);
        }
    
    }    
    
    class editarUsuarioListener implements ActionListener {
        
        private BuscarUsuarioControlador buc;
        public editarUsuarioListener(BuscarUsuarioControlador buscarusr){
            buc=buscarusr;
        }
        @Override
        public void actionPerformed(ActionEvent e) {            
            int sel=buscarUsuarioView.getFilaSel();
            if (sel!=-1){
                UsuarioGUI p = new UsuarioGUI(buscarUsuarioView.getPadre(), true);
                TesisUsuario u = lstUsuario.get(sel);                
                UsuarioControlador c = new UsuarioControlador (m,p,buc,u);
                p.setVisible(true);                
            }
        }
    
    } 
        
    class limpiarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            buscarUsuarioView.LimpiarDatos();
        }        
    }    
    
    class eliminarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=buscarUsuarioView.getFilaSel();
            if (sel!=-1){
                if (buscarUsuarioView.solicitarConfirmacion("¿Desea inactivar este usuario?")==0){
                    TesisUsuario u = lstUsuario.get(sel); 
                    u.setEstadosesion(ESTADO_INACTIVO);
                    m.guardarUsuario(u);
                    buscarUsuarioView.mostrarAviso("Se inactivó el usuario con éxito");
                    listarResultados();
                }
            }
            else{
                buscarUsuarioView.mostrarError("Debe seleccionar un usuario");
            }
        }        
    }       
    
    class activarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=buscarUsuarioView.getFilaSel();
            if (sel!=-1){
                if (buscarUsuarioView.solicitarConfirmacion("¿Desea reactivar este usuario?")==0){                
                    TesisUsuario u = lstUsuario.get(sel);
                    u.setEstadosesion(ESTADO_ACTIVO);
                    m.guardarUsuario(u);
                    buscarUsuarioView.mostrarAviso("Se reactivó el usuario con éxito");
                    listarResultados();
                }
            }
            else{
             buscarUsuarioView.mostrarError("Debe seleccionar un usuario");   
            }               
        }        
    }       
}
